package com.mage;

import freemarker.template.Configuration;
import freemarker.template.Template;

import java.io.File;
import java.io.FileWriter;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 *	基本数据类型
 */
public class FreemarkerApp02 {
	public static void main(String[] args) throws Exception {
		// 第一步：创建一个Configuration对象，直接new一个对象。构造方法的参数就是freemarker对于的版本号。
		Configuration configuration = new Configuration(Configuration.VERSION_2_3_29);
		// 第二步：设置模板文件所在的路径。
		configuration.setDirectoryForTemplateLoading(new File("src/main/templates"));
		// 第三步：设置模板文件使用的字符集。一般就是utf-8.
		configuration.setDefaultEncoding("utf-8");
		// 第四步：加载一个模板，创建一个模板对象。
		Template template = configuration.getTemplate("simple_datatype.ftl");
		// 第五步：创建数据对象，可以是pojo也可以是map。一般是Map。
		Map<String, Object> dataModel = new HashMap<>();
		dataModel.put("userName", "Big Joe"); // 字符串
		dataModel.put("age", 18); // 整型
		dataModel.put("weight", 160.8f); // 浮点型
		dataModel.put("money", 10977887989.8756d); // 双精度
		dataModel.put("code", 100000000000000000l); // 长整型
		dataModel.put("isMale", true); // 布尔值
		
		// 日期
		DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
		LocalDate birthday = LocalDate.parse("1970-08-08", dateFormatter);
		dataModel.put("birthday", birthday);
		// 日期时间
		// dataModel.put("now", LocalDateTime.now());
		dataModel.put("now", new Date());
		
		// 第六步：创建一个Writer对象，一般创建一FileWriter对象，指定生成的文件名。
		FileWriter out =  new FileWriter(new File("src/main/out/simple_datatype.html"));
		// 第七步：调用模板对象的process方法输出文件。
		template.process(dataModel, out);
		// 第八步：关闭流。
		out.close();
	}
}
